package api

import (
	"github.com/gin-gonic/gin"
)

// SetupRoutes 设置API路由
func SetupRoutes(router *gin.Engine, handler *Handler) {
	// API版本组
	v1 := router.Group("/api/v1")
	{
		// 健康检查
		v1.GET("/health", handler.HealthCheck)

		// 统计信息
		v1.GET("/stats", handler.GetStats)

		// 校准相关接口
		calibration := v1.Group("/calibration")
		{
			// 添加校准帧
			calibration.POST("/add-frame", handler.AddCalibrationFrame)
			// 执行校准
			calibration.POST("/perform", handler.PerformCalibration)
			// 获取校准状态
			calibration.GET("/status", handler.GetCalibrationStatus)
			// 重置校准
			calibration.DELETE("/reset", handler.ResetCalibration)
			// 设置校准数据
			calibration.POST("/set", handler.SetCalibrationData)
			// 获取所有校准数据
			calibration.GET("/all", handler.GetAllCalibrations)
			// 获取指定人员的校准数据
			calibration.GET("/person/:person_id", handler.GetCalibrationByPerson)
			// 删除指定人员的校准数据
			calibration.DELETE("/person/:person_id", handler.DeleteCalibration)
		}

		// 分析相关接口
		analysis := v1.Group("/analysis")
		{
			analysis.POST("/pose", handler.AnalyzePose)
		}

		// 配置相关接口
		config := v1.Group("/config")
		{
			config.GET("/thresholds", handler.GetThresholds)
			config.POST("/thresholds", handler.SetThresholds)
			config.GET("/filter-settings", handler.GetFilterSettings)
		}

		// 抖动过滤相关接口
		filter := v1.Group("/filter")
		{
			filter.POST("/smoothing-factor", handler.SetSmoothingFactor)
			filter.POST("/history-size", handler.SetHistorySize)
			filter.POST("/clear-history", handler.ClearHistory)
		}

		// 任务相关接口
		task := v1.Group("/task")
		{
			// 获取任务历史数据
			task.GET("/history", handler.GetTaskHistory)
			// 创建新任务
			task.POST("/create", handler.CreateTask)
			// 结束任务
			task.POST("/end", handler.EndTask)
		}

		// WebSocket相关接口
		websocket := v1.Group("/websocket")
		{
			// 获取WebSocket统计信息
			websocket.GET("/stats", handler.GetWebSocketStats)
		}
	}

	// WebSocket路由 - 支持人员ID和任务ID参数
	router.GET("/ws", handler.HandleWebSocket)
}

// WebSocketHandler WebSocket处理器接口
type WebSocketHandler interface {
	HandleWebSocket(c *gin.Context)
}
